<?php

require_once('utils.php');
require_once('fct_tab.php');
require_once('../fct_dao_auth.php');
require_once('../fct_dao_invite.php');
require_once('../fct_dao_livreor.php');
require_once('../fct_dao_ceremonie.php');
require_once('../fct_dao_type_ceremonie.php');
require_once('../commons_date.php');

define('URI_ERROR_PAGE'	,'http://' . $_SERVER['HTTP_HOST'] . '/wedding/admin/lyndamarcel/' . tabGetIdByCode('TAB_ERROR'));

//On vérifie si une déconnexion a été demandée
if (isset($_REQUEST['deconnexion']) && ($_REQUEST['deconnexion'] == '1')) {
	//On supprime les cookies d'authentification et applicatif
	destroyCookie(array
					(COOKIE_AUTH_NAME.'_'.$_SERVER['SERVER_NAME']
					,COOKIE_APP_NAME.'_'.$_SERVER['SERVER_NAME']
					)
				 );
	header('Location: /wedding/admin/lyndamarcel/');
	exit;
}

//Id du mariage à charger renseigné dans la requête
$idMariageToUse = getIdMariage();

//On vérifie que le cookie d'authentification est encore valide pour la session
$cookieExists = verifyCookie(COOKIE_AUTH_NAME, COOKIE_AUTH_LIFE_TIME_MINUTE, $idMariageToUse);

//Identifiant de l'onglet d'authentification
$idTabAuth = tabGetIdByCode('TAB_AUTHENTICATION');

//On cherche l'url de redirection
$urlRedirection = getCurrentBaseUrl();
if (isset($_REQUEST['urlRedirection'])) {
	$urlRedirection = $_REQUEST['urlRedirection'];
}

if (!$cookieExists) {
	if ($_SERVER['REQUEST_METHOD'] === 'POST') {
		// Accession par post, on récupère l'origine de l'appel
		$idTab = null;
		if (isset($_SERVER['HTTP_REFERER'])) {
			$idTab = getIdOngletFromUrl($_SERVER['HTTP_REFERER']);
			$urlRedirection = $_SERVER['HTTP_REFERER'];
		}


		if (!isset($_POST['onglet'])) {
			//On redirige en GET vers la page d'authentification
			$queryUrlArray = array();
			if (trim($urlRedirection) !== '') {
				$queryUrlArray['urlRedirection'] = $urlRedirection;
			}
			header('Location: '.buildUrl(getCurrentBaseUrl().'/'.$idTabAuth
										,$queryUrlArray
										)
				  );
			exit;
		}

		//L'identifiant de l'onglet est connu comme étant celui de l'authentification
		if ($_POST['onglet'] == $idTabAuth) {
			//Post depuis la page d'authentification, on vérifie les login et mot de passe
			$login  = (isset($_POST['login'])) ? trim($_POST['login']) : '';
			$passwd = (isset($_POST['passwd'])) ? hash('md5', trim($_POST['passwd'])) : '';
			
			if (($login === '') || ($passwd === '')) {
				//Le login et le mot de passe doivent tous deux être saisis
				$queryUrlArray = array
							('erreur' => 'Le login et le mot de passe doivent être saisis. Veuillez recommencer.'
							);
				if (trim($urlRedirection) !== '') {
					$queryUrlArray['urlRedirection'] = $urlRedirection;
				}
				//TODO Gérer la redirection avec les URIs /wedding/admin/lyndamarcel
				header
					('Location: '.buildUrl(getCurrentBaseUrl().'/'.$idTabAuth
										  ,$queryUrlArray
										  )
					);
				exit;
			} else{
				//Récupère le compte
				//TODO Gérer la redirection avec les URIs /wedding/admin/lyndamarcel
				$compte = getComtpeByLoginPassword($login, $passwd);
				if (count($compte) == 0) {
					//On redirige en GET vers la page d'authentification
					$queryUrlArray = array
								('erreur' => 'Le login et le mot de passe saisis sont incorrects. Veuillez recommencer.'
								);
					if (trim($urlRedirection) !== '') {
						$queryUrlArray['urlRedirection'] = $urlRedirection;
					}
					header
						('Location: '.buildUrl(getCurrentBaseUrl().'/'.idTabAuth
											  ,$queryUrlArray
											  )
						);
					exit;
				} else {
					//L'authentification a fonctionné, on crée le cookie d'authentification et on redirige vers la bonne page
					//TODO @MKI Gérer la liste d'id de mariages
					//TODO @MKI Si getLastIdMariagesByIdCompte == null, rediriger vers la page de création de mariage
					$idMariage = intval(getLastIdMariagesByIdCompte($compte['ID']));
					
					createCookieAuth(COOKIE_AUTH_NAME, COOKIE_AUTH_LIFE_TIME_MINUTE, $idMariage);
	
					//On enregistre l'authentification en base
					$idAuth = null;
					try {
						//FIXME Stocker aussi l'id du mariage
						$idAuth = ajouterAuth($_POST['login']);
						logTrace('"'.$_POST['login'].'" sauvegardé avec l\'identifiant '.$idAuth);
					} catch (Exception $e) {
						logError('L\'authentification de l\'utilisateur "'.$_POST['login'].'" n\'a pas pu être enregistrée en base à '.dateToString(date('c'), FORMAT_ATOM));
					}
					
					$idOnglet = getIdOngletFromUrl($urlRedirection);
					if (is_null($idOnglet)) {
						$idOnglet = tabGetIdByCode('TAB_ADMIN_MARIAGE');
					}
					logError('######## Authentification URL '.getCurrentBaseUrl());
					header('Location: '.getCurrentBaseUrl().'/'.$idOnglet);
					exit;
				}
			}
		}
	} else if ($_SERVER['REQUEST_METHOD'] === 'GET') {
		//On redirige en GET vers la page d'authentification
		$idOnglet = $idTabAuth;
	}
} else {
	//Le cookie existe. Si l'idOnglet demandé vaut celui de l'authentification, on redirige vers l'accueil
	if (isset($_REQUEST['onglet']) && ($_REQUEST['onglet'] == $idTabAuth)) {
		$idOnglet = tabGetIdByCode('TAB_ADMIN_MARIAGE');
		header('Location: '.getCurrentBaseUrl().'/'.$idOnglet);
		exit;
	}
	
	if (!isset($idOnglet) || ($idOnglet == 0)) {
		if (isset($_REQUEST['onglet'])) {
			$idOnglet = $_REQUEST['onglet'];
		} else {
			//Aucun idOnglet défini, on en initialise un
			$idOnglet = tabGetIdByCode('TAB_ADMIN_MARIAGE');
		}
	}
}

//Accession par GET ou existence du cookie d'authentification : on redirige vers la page d'onglet correspondant
echo getHeaderPage(true);
echo getBodyHeader();
?>
<div id="contentBody">
	<div id="left">
		<?php
			if ($cookieExists) {
				$idMariage = getIdMariage();
				echo getOngletMenu($idMariage, $idOnglet, 'ADMIN');
			}
		?>
	</div>
	<div id="centerAndRight">
		<?php include_once(tabGetHtml($idOnglet)); ?>
	</div>
	<div class="clearFloat"></div>
</div>
<?php echo getFooterPage();?>
